#ifndef CAMERA_H
#define CAMERA_H
#include <glm.hpp>
#include <gtc/matrix_transform.hpp>

class Camera
{
protected:
	const float LookSpeed;
	const float MoveSpeed;
	const float PitchClampInRadian;
	const float YawClampInRadian;

	glm::mat4 m_ViewMatrix;

	glm::vec3 m_Position;
	glm::vec3 m_Forward;
	glm::vec3 m_Right;
	glm::vec3 m_Up;

	float m_AngleX;
	float m_AngleY;

	bool m_MoveOnlyOnHorizontalPlane;

public:
	Camera();
	Camera(glm::vec3 position);
	~Camera();

	void update();
	void setMoveOnlyOnHorizontalPlane(bool flag);

	glm::vec3 getPosition();
	glm::vec3 getForward();
};

#endif